﻿using System.Collections;
using System.Collections.Generic;
using UnityEngine;

/// <summary>
/// 群体个体 - 代表群体中的一个个体
/// 负责个体的移动和与群体的关联
/// 需要Collider2D组件用于邻居检测
/// </summary>
[RequireComponent(typeof(Collider2D))]
public class FlockAgent : MonoBehaviour
{
    [Header("群体关联")]
    [Tooltip("个体所属的群体")]
    Flock agentFlock;
    
    /// <summary>
    /// 获取个体所属的群体（只读属性）
    /// </summary>
    public Flock AgentFlock { get { return agentFlock; } }

    [Header("碰撞检测")]
    [Tooltip("个体的碰撞器，用于邻居检测")]
    Collider2D agentCollider;
    
    /// <summary>
    /// 获取个体的碰撞器（只读属性）
    /// </summary>
    public Collider2D AgentCollider { get { return agentCollider; } }

    /// <summary>
    /// 初始化个体，获取碰撞器组件
    /// </summary>
    void Start()
    {
        agentCollider = GetComponent<Collider2D>();
    }

    /// <summary>
    /// 初始化个体与群体的关联
    /// </summary>
    /// <param name="flock">个体要加入的群体</param>
    public void Initialize(Flock flock)
    {
        agentFlock = flock;
    }

    /// <summary>
    /// 根据速度向量移动个体
    /// 自动调整朝向并更新位置
    /// </summary>
    /// <param name="velocity">移动速度向量</param>
    public void Move(Vector2 velocity)
    {
        // 根据移动方向调整朝向
        transform.up = velocity;
        // 更新位置
        transform.position += (Vector3)velocity * Time.deltaTime;
    }
}
